package com.peng.immodule.im;

import com.peng.immodule.adapter.IMABase;

import java.util.List;
import java.util.Map;

/**
 * Created by Mr.Q on 2018/3/6.
 * 描述
 */

public class EMAGroupManager extends IMABase {
    public void addListener(EMAGroupManagerListener iMAGroupManagerListener) {
        this.nativeAddListener(iMAGroupManagerListener);
    }

    native void nativeAddListener(EMAGroupManagerListener var1);

    public void removeListener(EMAGroupManagerListener var1) {
        this.nativeRemoveListener(var1);
    }

    native void nativeRemoveListener(EMAGroupManagerListener var1);

    public void clearListeners() {
        this.nativeClearListeners();
    }

    native void nativeClearListeners();

    public List<EMAGroup> allMyGroups(EMAError var1) {
        return this.nativeAllMyGroups(var1);
    }

    native List<EMAGroup> nativeAllMyGroups(EMAError var1);

    public List<EMAGroup> fetchAllMyGroups(EMAError var1) {
        return this.nativeFetchAllMyGroups(var1);
    }

    native List<EMAGroup> nativeFetchAllMyGroups(EMAError var1);

    public List<EMAGroup> fetchAllMyGroupsWithPage(int var1, int var2, EMAError var3) {
        return this.nativeFetchAllMyGroupsWithPage(var1, var2, var3);
    }

    native List<EMAGroup> nativeFetchAllMyGroupsWithPage(int var1, int var2, EMAError var3);

    public EMCursorResult<EMGroupInfo> fetchPublicGroupsWithCursor(String var1, int var2, EMAError var3) {
        return this.nativeFetchPublicGroupsWithCursor(var1, var2, var3);
    }

    native EMCursorResult<EMGroupInfo> nativeFetchPublicGroupsWithCursor(String var1, int var2, EMAError var3);

    public EMAGroup createGroup(String var1, String var2, String var3, EMAGroupSetting var4, List<String> var5, boolean var6, EMAError var7) {
        return this.nativeCreateGroup(var1, var2, var3, var4, var5, var6, var7);
    }

    native EMAGroup nativeCreateGroup(String var1, String var2, String var3, EMAGroupSetting var4, List<String> var5, boolean var6, EMAError var7);

    public EMAGroup joinPublicGroup(String var1, EMAError var2) {
        return this.nativeJoinPublicGroup(var1, var2);
    }

    native EMAGroup nativeJoinPublicGroup(String var1, EMAError var2);

    public EMAGroup applyJoinPublicGroup(String var1, String var2, String var3, EMAError var4) {
        return this.nativeApplyJoinPublicGroup(var1, var2, var3, var4);
    }

    native EMAGroup nativeApplyJoinPublicGroup(String var1, String var2, String var3, EMAError var4);

    public void leaveGroup(String var1, EMAError var2) {
        this.nativeLeaveGroup(var1, var2);
    }

    native void nativeLeaveGroup(String var1, EMAError var2);

    public void destroyGroup(String var1, EMAError var2) {
        this.nativeDestroyGroup(var1, var2);
    }

    native void nativeDestroyGroup(String var1, EMAError var2);

    public EMAGroup addGroupMembers(String var1, List<String> var2, String var3, EMAError var4) {
        return this.nativeAddGroupMembers(var1, var2, var3, var4);
    }

    native EMAGroup nativeAddGroupMembers(String var1, List<String> var2, String var3, EMAError var4);

    public EMAGroup removeGroupMembers(String var1, List<String> var2, EMAError var3) {
        return this.nativeRemoveGroupMembers(var1, var2, var3);
    }

    native EMAGroup nativeRemoveGroupMembers(String var1, List<String> var2, EMAError var3);

    public EMAGroup blockGroupMembers(String var1, List<String> var2, EMAError var3, String var4) {
        return this.nativeBlockGroupMembers(var1, var2, var3, var4);
    }

    native EMAGroup nativeBlockGroupMembers(String var1, List<String> var2, EMAError var3, String var4);

    public EMAGroup unblockGroupMembers(String var1, List<String> var2, EMAError var3) {
        return this.nativeUnblockGroupMembers(var1, var2, var3);
    }

    native EMAGroup nativeUnblockGroupMembers(String var1, List<String> var2, EMAError var3);

    public EMAGroup changeGroupSubject(String var1, String var2, EMAError var3) {
        return this.nativeChangeGroupSubject(var1, var2, var3);
    }

    native EMAGroup nativeChangeGroupSubject(String var1, String var2, EMAError var3);

    public EMAGroup changeGroupDescription(String var1, String var2, EMAError var3) {
        return this.nativeChangeGroupDescription(var1, var2, var3);
    }

    native EMAGroup nativeChangeGroupDescription(String var1, String var2, EMAError var3);

    public EMAGroup fetchGroupSpecification(String var1, EMAError var2, boolean var3) {
        return this.nativeFetchGroupSpecification(var1, var2, var3);
    }

    native EMAGroup nativeFetchGroupSpecification(String var1, EMAError var2, boolean var3);

    public EMAGroup searchPublicGroup(String var1, EMAError var2) {
        return this.nativeSearchPublicGroup(var1, var2);
    }

    native EMAGroup nativeSearchPublicGroup(String var1, EMAError var2);

    public EMAGroup blockGroupMessage(String var1, EMAError var2) {
        return this.nativeBlockGroupMessage(var1, var2);
    }

    native EMAGroup nativeBlockGroupMessage(String var1, EMAError var2);

    public EMAGroup unblockGroupMessage(String var1, EMAError var2) {
        return this.nativeUnblockGroupMessage(var1, var2);
    }

    native EMAGroup nativeUnblockGroupMessage(String var1, EMAError var2);

    public void acceptJoinGroupApplication(String var1, String var2, EMAError var3) {
        this.nativeAcceptJoinGroupApplication(var1, var2, var3);
    }

    native void nativeAcceptJoinGroupApplication(String var1, String var2, EMAError var3);

    public void declineJoinGroupApplication(String var1, String var2, String var3, EMAError var4) {
        this.nativeDeclineJoinGroupApplication(var1, var2, var3, var4);
    }

    native void nativeDeclineJoinGroupApplication(String var1, String var2, String var3, EMAError var4);

    public void loadAllMyGroupsFromDB() {
        this.nativeLoadAllMyGroupsFromDB();
    }

    native void nativeLoadAllMyGroupsFromDB();

    public EMAGroup acceptInvitationFromGroup(String var1, String var2, EMAError var3) {
        return this.nativeacceptInvitationFromGroup(var1, var2, var3);
    }

    native EMAGroup nativeacceptInvitationFromGroup(String var1, String var2, EMAError var3);

    public void declineInvitationFromGroup(String var1, String var2, String var3, EMAError var4) {
        this.nativedeclineInvitationFromGroup(var1, var2, var3, var4);
    }

    native void nativedeclineInvitationFromGroup(String var1, String var2, String var3, EMAError var4);

    public EMCursorResult<String> fetchGroupMembers(String var1, String var2, int var3, EMAError var4) {
        return this.nativeFetchGroupMembers(var1, var2, var3, var4);
    }

    native EMCursorResult<String> nativeFetchGroupMembers(String var1, String var2, int var3, EMAError var4);

    public EMAGroup transferGroupOwner(String var1, String var2, EMAError var3) {
        return this.nativeTransferGroupOwner(var1, var2, var3);
    }

    native EMAGroup nativeTransferGroupOwner(String var1, String var2, EMAError var3);

    public EMAGroup addGroupAdmin(String var1, String var2, EMAError var3) {
        return this.nativeAddGroupAdmin(var1, var2, var3);
    }

    native EMAGroup nativeAddGroupAdmin(String var1, String var2, EMAError var3);

    public EMAGroup removeGroupAdmin(String var1, String var2, EMAError var3) {
        return this.nativeRemoveGroupAdmin(var1, var2, var3);
    }

    native EMAGroup nativeRemoveGroupAdmin(String var1, String var2, EMAError var3);

    public EMAGroup muteGroupMembers(String var1, List<String> var2, long var3, EMAError var5) {
        return this.nativeMuteGroupMembers(var1, var2, var3, var5);
    }

    native EMAGroup nativeMuteGroupMembers(String var1, List<String> var2, long var3, EMAError var5);

    public EMAGroup unMuteGroupMembers(String var1, List<String> var2, EMAError var3) {
        return this.nativeUnMuteGroupMembers(var1, var2, var3);
    }

    native EMAGroup nativeUnMuteGroupMembers(String var1, List<String> var2, EMAError var3);

    public Map<String, Long> fetchGroupMutes(String var1, int var2, int var3, EMAError var4) {
        return this.nativeFetchGroupMutes(var1, var2, var3, var4);
    }

    native Map<String, Long> nativeFetchGroupMutes(String var1, int var2, int var3, EMAError var4);

    public List<String> fetchGroupBlackList(String var1, int var2, int var3, EMAError var4) {
        return this.nativeFetchGroupBlackList(var1, var2, var3, var4);
    }

    native List<String> nativeFetchGroupBlackList(String var1, int var2, int var3, EMAError var4);

    public EMAGroup updateGroupExtension(String var1, String var2, EMAError var3) {
        return this.nativeUpdateGroupExtension(var1, var2, var3);
    }

    native EMAGroup nativeUpdateGroupExtension(String var1, String var2, EMAError var3);

    public String fetchGroupAnnouncement(String var1, EMAError var2) {
        return this.nativeFetchGroupAnnouncement(var1, var2);
    }

    native String nativeFetchGroupAnnouncement(String var1, EMAError var2);

    public void updateGroupAnnouncement(String var1, String var2, EMAError var3) {
        this.nativeUpdateGroupAnnouncement(var1, var2, var3);
    }

    native void nativeUpdateGroupAnnouncement(String var1, String var2, EMAError var3);

    public EMAMucShareFile uploadGroupShareFile(String var1, String var2, EMACallback var3, EMAError var4) {
        return this.nativeUploadGroupShareFile(var1, var2, var3, var4);
    }

    native EMAMucShareFile nativeUploadGroupShareFile(String var1, String var2, EMACallback var3, EMAError var4);

    public List<EMAMucShareFile> fetchGroupShareFiles(String var1, int var2, int var3, EMAError var4) {
        return this.nativeFetchGroupShareFiles(var1, var2, var3, var4);
    }

    native List<EMAMucShareFile> nativeFetchGroupShareFiles(String var1, int var2, int var3, EMAError var4);

    public void deleteGroupShareFile(String var1, String var2, EMAError var3) {
        this.nativeDeleteGroupShareFile(var1, var2, var3);
    }

    native void nativeDeleteGroupShareFile(String var1, String var2, EMAError var3);

    public void downloadGroupShareFile(String var1, String var2, String var3, EMACallback var4, EMAError var5) {
        this.nativeDownloadGroupShareFile(var1, var2, var3, var4, var5);
    }

    native void nativeDownloadGroupShareFile(String var1, String var2, String var3, EMACallback var4, EMAError var5);

    public EMAGroupManager() {
    }

    public EMAGroupManager(EMAGroupManager var1) {
        this.nativeInit(var1);
    }

    native void nativeInit(EMAGroupManager var1);
}
